package sk.scerbak.ucl.usecases.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import sk.scerbak.ucl.usecases.services.UsecasesGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalUsecasesParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_ID", "RULE_UPID", "RULE_EMPTY", "RULE_CHAR", "RULE_UPCHAR", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "':'", "'Use Case'", "'Goal:'", "'Scope:'", "'Level:'", "'Primary actor:'", "'Secondary actors:'", "'Stakeholders:'", "'Interests:'", "'Preconditions:'", "'Success guarantees:'", "'Minimal guarantees:'", "'Trigger:'", "'Main success scenario:'", "'Extensions:'", "'Technology and data variants:'", "'Open issues:'", "'-'", "'.'", "','", "'*'", "'Use case ends with'", "'Use case continues with step'", "'?'", "'('", "')'", "'/'", "'import'", "'.*'", "'business'", "'system'", "'subsystem'", "'black-box'", "'white-box'", "'summary'", "'user-goal'", "'subfunction'", "'success'", "'failure'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=14;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int RULE_EMPTY=7;
    public static final int T__19=19;
    public static final int T__16=16;
    public static final int T__51=51;
    public static final int T__15=15;
    public static final int T__52=52;
    public static final int T__18=18;
    public static final int T__53=53;
    public static final int T__17=17;
    public static final int T__54=54;
    public static final int RULE_UPID=6;
    public static final int RULE_INT=4;
    public static final int RULE_CHAR=8;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int RULE_UPCHAR=9;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=12;
    public static final int RULE_ML_COMMENT=11;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=10;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=13;

    // delegates
    // delegators


        public InternalUsecasesParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalUsecasesParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalUsecasesParser.tokenNames; }
    public String getGrammarFileName() { return "../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g"; }



     	private UsecasesGrammarAccess grammarAccess;
     	
        public InternalUsecasesParser(TokenStream input, UsecasesGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected UsecasesGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:68:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:69:2: (iv_ruleModel= ruleModel EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:70:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:77:1: ruleModel returns [EObject current=null] : ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0_0 = null;

        EObject lv_package_1_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:80:28: ( ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:81:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:81:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:81:2: ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:81:2: ( (lv_imports_0_0= ruleImport ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==43) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:82:1: (lv_imports_0_0= ruleImport )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:82:1: (lv_imports_0_0= ruleImport )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:83:3: lv_imports_0_0= ruleImport
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getImportsImportParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleModel131);
            	    lv_imports_0_0=ruleImport();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"imports",
            	            		lv_imports_0_0, 
            	            		"Import");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:99:3: ( (lv_package_1_0= rulePackage ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:100:1: (lv_package_1_0= rulePackage )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:100:1: (lv_package_1_0= rulePackage )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:101:3: lv_package_1_0= rulePackage
            {
             
            	        newCompositeNode(grammarAccess.getModelAccess().getPackagePackageParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulePackage_in_ruleModel153);
            lv_package_1_0=rulePackage();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getModelRule());
            	        }
                   		set(
                   			current, 
                   			"package",
                    		lv_package_1_0, 
                    		"Package");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRulePackage"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:125:1: entryRulePackage returns [EObject current=null] : iv_rulePackage= rulePackage EOF ;
    public final EObject entryRulePackage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackage = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:126:2: (iv_rulePackage= rulePackage EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:127:2: iv_rulePackage= rulePackage EOF
            {
             newCompositeNode(grammarAccess.getPackageRule()); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage189);
            iv_rulePackage=rulePackage();

            state._fsp--;

             current =iv_rulePackage; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackage"


    // $ANTLR start "rulePackage"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:134:1: rulePackage returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_usecases_3_0= ruleUseCase ) )+ ) ;
    public final EObject rulePackage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_usecases_3_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:137:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_usecases_3_0= ruleUseCase ) )+ ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:138:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_usecases_3_0= ruleUseCase ) )+ )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:138:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_usecases_3_0= ruleUseCase ) )+ )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:138:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_usecases_3_0= ruleUseCase ) )+
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_rulePackage236); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageAccess().getPackageKeyword_0());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:142:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:143:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:143:1: (lv_name_1_0= ruleQualifiedName )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:144:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getPackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackage257);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,16,FOLLOW_16_in_rulePackage269); 

                	newLeafNode(otherlv_2, grammarAccess.getPackageAccess().getColonKeyword_2());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:164:1: ( (lv_usecases_3_0= ruleUseCase ) )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==17) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:165:1: (lv_usecases_3_0= ruleUseCase )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:165:1: (lv_usecases_3_0= ruleUseCase )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:166:3: lv_usecases_3_0= ruleUseCase
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPackageAccess().getUsecasesUseCaseParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleUseCase_in_rulePackage290);
            	    lv_usecases_3_0=ruleUseCase();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPackageRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"usecases",
            	            		lv_usecases_3_0, 
            	            		"UseCase");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackage"


    // $ANTLR start "entryRuleUseCase"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:190:1: entryRuleUseCase returns [EObject current=null] : iv_ruleUseCase= ruleUseCase EOF ;
    public final EObject entryRuleUseCase() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUseCase = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:191:2: (iv_ruleUseCase= ruleUseCase EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:192:2: iv_ruleUseCase= ruleUseCase EOF
            {
             newCompositeNode(grammarAccess.getUseCaseRule()); 
            pushFollow(FOLLOW_ruleUseCase_in_entryRuleUseCase327);
            iv_ruleUseCase=ruleUseCase();

            state._fsp--;

             current =iv_ruleUseCase; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUseCase337); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUseCase"


    // $ANTLR start "ruleUseCase"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:199:1: ruleUseCase returns [EObject current=null] : (otherlv_0= 'Use Case' ( (lv_name_1_0= ruleNAME ) ) (otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) ) ) otherlv_26= 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ (otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? (otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? (otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? ) ;
    public final EObject ruleUseCase() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token otherlv_18=null;
        Token otherlv_20=null;
        Token otherlv_22=null;
        Token otherlv_24=null;
        Token otherlv_26=null;
        Token otherlv_28=null;
        Token otherlv_30=null;
        Token otherlv_32=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        AntlrDatatypeRuleToken lv_description_3_0 = null;

        EObject lv_scope_6_0 = null;

        Enumerator lv_level_8_0 = null;

        EObject lv_primaryActor_10_0 = null;

        EObject lv_secondaryActors_12_0 = null;

        EObject lv_tertiaryActors_14_0 = null;

        EObject lv_interests_16_0 = null;

        EObject lv_preconditions_19_0 = null;

        EObject lv_postconditions_21_0 = null;

        EObject lv_invariants_23_0 = null;

        EObject lv_trigger_25_0 = null;

        EObject lv_steps_27_0 = null;

        EObject lv_extensions_29_0 = null;

        EObject lv_variants_31_0 = null;

        EObject lv_issues_33_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:202:28: ( (otherlv_0= 'Use Case' ( (lv_name_1_0= ruleNAME ) ) (otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) ) ) otherlv_26= 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ (otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? (otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? (otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:203:1: (otherlv_0= 'Use Case' ( (lv_name_1_0= ruleNAME ) ) (otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) ) ) otherlv_26= 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ (otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? (otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? (otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:203:1: (otherlv_0= 'Use Case' ( (lv_name_1_0= ruleNAME ) ) (otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) ) ) otherlv_26= 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ (otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? (otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? (otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:203:3: otherlv_0= 'Use Case' ( (lv_name_1_0= ruleNAME ) ) (otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) ) ) otherlv_26= 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ (otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? (otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? (otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )?
            {
            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleUseCase374); 

                	newLeafNode(otherlv_0, grammarAccess.getUseCaseAccess().getUseCaseKeyword_0());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:207:1: ( (lv_name_1_0= ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:208:1: (lv_name_1_0= ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:208:1: (lv_name_1_0= ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:209:3: lv_name_1_0= ruleNAME
            {
             
            	        newCompositeNode(grammarAccess.getUseCaseAccess().getNameNAMEParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleUseCase395);
            lv_name_1_0=ruleNAME();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"NAME");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:225:2: (otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==18) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:225:4: otherlv_2= 'Goal:' ( (lv_description_3_0= rulePlainText ) )
                    {
                    otherlv_2=(Token)match(input,18,FOLLOW_18_in_ruleUseCase408); 

                        	newLeafNode(otherlv_2, grammarAccess.getUseCaseAccess().getGoalKeyword_2_0());
                        
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:229:1: ( (lv_description_3_0= rulePlainText ) )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:230:1: (lv_description_3_0= rulePlainText )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:230:1: (lv_description_3_0= rulePlainText )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:231:3: lv_description_3_0= rulePlainText
                    {
                     
                    	        newCompositeNode(grammarAccess.getUseCaseAccess().getDescriptionPlainTextParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulePlainText_in_ruleUseCase429);
                    lv_description_3_0=rulePlainText();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
                    	        }
                           		set(
                           			current, 
                           			"description",
                            		lv_description_3_0, 
                            		"PlainText");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:247:4: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:249:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:249:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:250:2: ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?)
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:253:2: ( ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?)
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:254:3: ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+ {...}?
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:254:3: ( ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) ) )+
            int cnt7=0;
            loop7:
            do {
                int alt7=7;
                int LA7_0 = input.LA(1);

                if ( LA7_0 ==19 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0) ) {
                    alt7=1;
                }
                else if ( LA7_0 ==20 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1) ) {
                    alt7=2;
                }
                else if ( LA7_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2) ) {
                    alt7=3;
                }
                else if ( LA7_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3) ) {
                    alt7=4;
                }
                else if ( LA7_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4) ) {
                    alt7=5;
                }
                else if ( LA7_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5) ) {
                    alt7=6;
                }


                switch (alt7) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:256:4: ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:256:4: ({...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:257:5: {...}? => ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:257:104: ( ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:258:6: ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:261:6: ({...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:261:7: {...}? => (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:261:16: (otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:261:18: otherlv_5= 'Scope:' ( (lv_scope_6_0= ruleScope ) )
            	    {
            	    otherlv_5=(Token)match(input,19,FOLLOW_19_in_ruleUseCase489); 

            	        	newLeafNode(otherlv_5, grammarAccess.getUseCaseAccess().getScopeKeyword_3_0_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:265:1: ( (lv_scope_6_0= ruleScope ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:266:1: (lv_scope_6_0= ruleScope )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:266:1: (lv_scope_6_0= ruleScope )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:267:3: lv_scope_6_0= ruleScope
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getScopeScopeParserRuleCall_3_0_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleScope_in_ruleUseCase510);
            	    lv_scope_6_0=ruleScope();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"scope",
            	            		lv_scope_6_0, 
            	            		"Scope");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:290:4: ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:290:4: ({...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:291:5: {...}? => ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:291:104: ( ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:292:6: ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:295:6: ({...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:295:7: {...}? => (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:295:16: (otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:295:18: otherlv_7= 'Level:' ( (lv_level_8_0= ruleLevel ) )
            	    {
            	    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleUseCase578); 

            	        	newLeafNode(otherlv_7, grammarAccess.getUseCaseAccess().getLevelKeyword_3_1_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:299:1: ( (lv_level_8_0= ruleLevel ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:300:1: (lv_level_8_0= ruleLevel )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:300:1: (lv_level_8_0= ruleLevel )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:301:3: lv_level_8_0= ruleLevel
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getLevelLevelEnumRuleCall_3_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleLevel_in_ruleUseCase599);
            	    lv_level_8_0=ruleLevel();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"level",
            	            		lv_level_8_0, 
            	            		"Level");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:324:4: ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:324:4: ({...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:325:5: {...}? => ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:325:104: ( ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:326:6: ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:329:6: ({...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:329:7: {...}? => (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:329:16: (otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:329:18: otherlv_9= 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) )
            	    {
            	    otherlv_9=(Token)match(input,21,FOLLOW_21_in_ruleUseCase667); 

            	        	newLeafNode(otherlv_9, grammarAccess.getUseCaseAccess().getPrimaryActorKeyword_3_2_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:333:1: ( (lv_primaryActor_10_0= ruleActor ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:334:1: (lv_primaryActor_10_0= ruleActor )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:334:1: (lv_primaryActor_10_0= ruleActor )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:335:3: lv_primaryActor_10_0= ruleActor
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getPrimaryActorActorParserRuleCall_3_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleActor_in_ruleUseCase688);
            	    lv_primaryActor_10_0=ruleActor();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"primaryActor",
            	            		lv_primaryActor_10_0, 
            	            		"Actor");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:358:4: ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:358:4: ({...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:359:5: {...}? => ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:359:104: ( ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:360:6: ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:363:6: ({...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:363:7: {...}? => (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:363:16: (otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:363:18: otherlv_11= 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+
            	    {
            	    otherlv_11=(Token)match(input,22,FOLLOW_22_in_ruleUseCase756); 

            	        	newLeafNode(otherlv_11, grammarAccess.getUseCaseAccess().getSecondaryActorsKeyword_3_3_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:367:1: ( (lv_secondaryActors_12_0= ruleActor ) )+
            	    int cnt4=0;
            	    loop4:
            	    do {
            	        int alt4=2;
            	        int LA4_0 = input.LA(1);

            	        if ( (LA4_0==RULE_UPID) ) {
            	            alt4=1;
            	        }


            	        switch (alt4) {
            	    	case 1 :
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:368:1: (lv_secondaryActors_12_0= ruleActor )
            	    	    {
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:368:1: (lv_secondaryActors_12_0= ruleActor )
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:369:3: lv_secondaryActors_12_0= ruleActor
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getSecondaryActorsActorParserRuleCall_3_3_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleActor_in_ruleUseCase777);
            	    	    lv_secondaryActors_12_0=ruleActor();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"secondaryActors",
            	    	            		lv_secondaryActors_12_0, 
            	    	            		"Actor");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt4 >= 1 ) break loop4;
            	                EarlyExitException eee =
            	                    new EarlyExitException(4, input);
            	                throw eee;
            	        }
            	        cnt4++;
            	    } while (true);


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 5 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:392:4: ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:392:4: ({...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:393:5: {...}? => ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:393:104: ( ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:394:6: ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:397:6: ({...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:397:7: {...}? => (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:397:16: (otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:397:18: otherlv_13= 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+
            	    {
            	    otherlv_13=(Token)match(input,23,FOLLOW_23_in_ruleUseCase846); 

            	        	newLeafNode(otherlv_13, grammarAccess.getUseCaseAccess().getStakeholdersKeyword_3_4_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:401:1: ( (lv_tertiaryActors_14_0= ruleActor ) )+
            	    int cnt5=0;
            	    loop5:
            	    do {
            	        int alt5=2;
            	        int LA5_0 = input.LA(1);

            	        if ( (LA5_0==RULE_UPID) ) {
            	            alt5=1;
            	        }


            	        switch (alt5) {
            	    	case 1 :
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:402:1: (lv_tertiaryActors_14_0= ruleActor )
            	    	    {
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:402:1: (lv_tertiaryActors_14_0= ruleActor )
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:403:3: lv_tertiaryActors_14_0= ruleActor
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getTertiaryActorsActorParserRuleCall_3_4_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleActor_in_ruleUseCase867);
            	    	    lv_tertiaryActors_14_0=ruleActor();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"tertiaryActors",
            	    	            		lv_tertiaryActors_14_0, 
            	    	            		"Actor");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt5 >= 1 ) break loop5;
            	                EarlyExitException eee =
            	                    new EarlyExitException(5, input);
            	                throw eee;
            	        }
            	        cnt5++;
            	    } while (true);


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 6 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:426:4: ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:426:4: ({...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:427:5: {...}? => ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:427:104: ( ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:428:6: ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:431:6: ({...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:431:7: {...}? => (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:431:16: (otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:431:18: otherlv_15= 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+
            	    {
            	    otherlv_15=(Token)match(input,24,FOLLOW_24_in_ruleUseCase936); 

            	        	newLeafNode(otherlv_15, grammarAccess.getUseCaseAccess().getInterestsKeyword_3_5_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:435:1: ( (lv_interests_16_0= ruleInterest ) )+
            	    int cnt6=0;
            	    loop6:
            	    do {
            	        int alt6=2;
            	        int LA6_0 = input.LA(1);

            	        if ( (LA6_0==RULE_UPID) ) {
            	            alt6=1;
            	        }


            	        switch (alt6) {
            	    	case 1 :
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:436:1: (lv_interests_16_0= ruleInterest )
            	    	    {
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:436:1: (lv_interests_16_0= ruleInterest )
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:437:3: lv_interests_16_0= ruleInterest
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getInterestsInterestParserRuleCall_3_5_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleInterest_in_ruleUseCase957);
            	    	    lv_interests_16_0=ruleInterest();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"interests",
            	    	            		lv_interests_16_0, 
            	    	            		"Interest");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt6 >= 1 ) break loop6;
            	                EarlyExitException eee =
            	                    new EarlyExitException(6, input);
            	                throw eee;
            	        }
            	        cnt6++;
            	    } while (true);


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt7 >= 1 ) break loop7;
                        EarlyExitException eee =
                            new EarlyExitException(7, input);
                        throw eee;
                }
                cnt7++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getUseCaseAccess().getUnorderedGroup_3()) ) {
                throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canLeave(grammarAccess.getUseCaseAccess().getUnorderedGroup_3())");
            }

            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	

            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:468:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:470:1: ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:470:1: ( ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:471:2: ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* )
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:474:2: ( ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )* )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:475:3: ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )*
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:475:3: ( ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) ) )*
            loop11:
            do {
                int alt11=5;
                int LA11_0 = input.LA(1);

                if ( LA11_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0) ) {
                    alt11=1;
                }
                else if ( LA11_0 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1) ) {
                    alt11=2;
                }
                else if ( LA11_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2) ) {
                    alt11=3;
                }
                else if ( LA11_0 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3) ) {
                    alt11=4;
                }


                switch (alt11) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:477:4: ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:477:4: ({...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:478:5: {...}? => ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:478:104: ( ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:479:6: ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:482:6: ({...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:482:7: {...}? => (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:482:16: (otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:482:18: otherlv_18= 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+
            	    {
            	    otherlv_18=(Token)match(input,25,FOLLOW_25_in_ruleUseCase1063); 

            	        	newLeafNode(otherlv_18, grammarAccess.getUseCaseAccess().getPreconditionsKeyword_4_0_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:486:1: ( (lv_preconditions_19_0= ruleCondition ) )+
            	    int cnt8=0;
            	    loop8:
            	    do {
            	        int alt8=2;
            	        int LA8_0 = input.LA(1);

            	        if ( (LA8_0==RULE_UPID) ) {
            	            alt8=1;
            	        }


            	        switch (alt8) {
            	    	case 1 :
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:487:1: (lv_preconditions_19_0= ruleCondition )
            	    	    {
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:487:1: (lv_preconditions_19_0= ruleCondition )
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:488:3: lv_preconditions_19_0= ruleCondition
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getPreconditionsConditionParserRuleCall_4_0_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleCondition_in_ruleUseCase1084);
            	    	    lv_preconditions_19_0=ruleCondition();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"preconditions",
            	    	            		lv_preconditions_19_0, 
            	    	            		"Condition");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt8 >= 1 ) break loop8;
            	                EarlyExitException eee =
            	                    new EarlyExitException(8, input);
            	                throw eee;
            	        }
            	        cnt8++;
            	    } while (true);


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:511:4: ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:511:4: ({...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:512:5: {...}? => ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:512:104: ( ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:513:6: ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:516:6: ({...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:516:7: {...}? => (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:516:16: (otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:516:18: otherlv_20= 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+
            	    {
            	    otherlv_20=(Token)match(input,26,FOLLOW_26_in_ruleUseCase1153); 

            	        	newLeafNode(otherlv_20, grammarAccess.getUseCaseAccess().getSuccessGuaranteesKeyword_4_1_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:520:1: ( (lv_postconditions_21_0= ruleCondition ) )+
            	    int cnt9=0;
            	    loop9:
            	    do {
            	        int alt9=2;
            	        int LA9_0 = input.LA(1);

            	        if ( (LA9_0==RULE_UPID) ) {
            	            alt9=1;
            	        }


            	        switch (alt9) {
            	    	case 1 :
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:521:1: (lv_postconditions_21_0= ruleCondition )
            	    	    {
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:521:1: (lv_postconditions_21_0= ruleCondition )
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:522:3: lv_postconditions_21_0= ruleCondition
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getPostconditionsConditionParserRuleCall_4_1_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleCondition_in_ruleUseCase1174);
            	    	    lv_postconditions_21_0=ruleCondition();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"postconditions",
            	    	            		lv_postconditions_21_0, 
            	    	            		"Condition");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt9 >= 1 ) break loop9;
            	                EarlyExitException eee =
            	                    new EarlyExitException(9, input);
            	                throw eee;
            	        }
            	        cnt9++;
            	    } while (true);


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:545:4: ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:545:4: ({...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:546:5: {...}? => ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:546:104: ( ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:547:6: ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:550:6: ({...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:550:7: {...}? => (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:550:16: (otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:550:18: otherlv_22= 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+
            	    {
            	    otherlv_22=(Token)match(input,27,FOLLOW_27_in_ruleUseCase1243); 

            	        	newLeafNode(otherlv_22, grammarAccess.getUseCaseAccess().getMinimalGuaranteesKeyword_4_2_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:554:1: ( (lv_invariants_23_0= ruleCondition ) )+
            	    int cnt10=0;
            	    loop10:
            	    do {
            	        int alt10=2;
            	        int LA10_0 = input.LA(1);

            	        if ( (LA10_0==RULE_UPID) ) {
            	            alt10=1;
            	        }


            	        switch (alt10) {
            	    	case 1 :
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:555:1: (lv_invariants_23_0= ruleCondition )
            	    	    {
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:555:1: (lv_invariants_23_0= ruleCondition )
            	    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:556:3: lv_invariants_23_0= ruleCondition
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getInvariantsConditionParserRuleCall_4_2_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleCondition_in_ruleUseCase1264);
            	    	    lv_invariants_23_0=ruleCondition();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"invariants",
            	    	            		lv_invariants_23_0, 
            	    	            		"Condition");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt10 >= 1 ) break loop10;
            	                EarlyExitException eee =
            	                    new EarlyExitException(10, input);
            	                throw eee;
            	        }
            	        cnt10++;
            	    } while (true);


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:579:4: ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:579:4: ({...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:580:5: {...}? => ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3)");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:580:104: ( ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:581:6: ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3);
            	    	 				
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:584:6: ({...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:584:7: {...}? => (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "true");
            	    }
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:584:16: (otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:584:18: otherlv_24= 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) )
            	    {
            	    otherlv_24=(Token)match(input,28,FOLLOW_28_in_ruleUseCase1333); 

            	        	newLeafNode(otherlv_24, grammarAccess.getUseCaseAccess().getTriggerKeyword_4_3_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:588:1: ( (lv_trigger_25_0= ruleTrigger ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:589:1: (lv_trigger_25_0= ruleTrigger )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:589:1: (lv_trigger_25_0= ruleTrigger )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:590:3: lv_trigger_25_0= ruleTrigger
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getTriggerTriggerParserRuleCall_4_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleTrigger_in_ruleUseCase1354);
            	    lv_trigger_25_0=ruleTrigger();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	        }
            	           		set(
            	           			current, 
            	           			"trigger",
            	            		lv_trigger_25_0, 
            	            		"Trigger");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);


            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	

            }

            otherlv_26=(Token)match(input,29,FOLLOW_29_in_ruleUseCase1407); 

                	newLeafNode(otherlv_26, grammarAccess.getUseCaseAccess().getMainSuccessScenarioKeyword_5());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:624:1: ( (lv_steps_27_0= ruleActionStep ) )+
            int cnt12=0;
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==RULE_INT) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:625:1: (lv_steps_27_0= ruleActionStep )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:625:1: (lv_steps_27_0= ruleActionStep )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:626:3: lv_steps_27_0= ruleActionStep
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getStepsActionStepParserRuleCall_6_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleActionStep_in_ruleUseCase1428);
            	    lv_steps_27_0=ruleActionStep();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"steps",
            	            		lv_steps_27_0, 
            	            		"ActionStep");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt12 >= 1 ) break loop12;
                        EarlyExitException eee =
                            new EarlyExitException(12, input);
                        throw eee;
                }
                cnt12++;
            } while (true);

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:642:3: (otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==30) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:642:5: otherlv_28= 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+
                    {
                    otherlv_28=(Token)match(input,30,FOLLOW_30_in_ruleUseCase1442); 

                        	newLeafNode(otherlv_28, grammarAccess.getUseCaseAccess().getExtensionsKeyword_7_0());
                        
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:646:1: ( (lv_extensions_29_0= ruleExtension ) )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==RULE_INT||LA13_0==36) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:647:1: (lv_extensions_29_0= ruleExtension )
                    	    {
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:647:1: (lv_extensions_29_0= ruleExtension )
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:648:3: lv_extensions_29_0= ruleExtension
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getExtensionsExtensionParserRuleCall_7_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleExtension_in_ruleUseCase1463);
                    	    lv_extensions_29_0=ruleExtension();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"extensions",
                    	            		lv_extensions_29_0, 
                    	            		"Extension");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    }
                    break;

            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:664:5: (otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==31) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:664:7: otherlv_30= 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+
                    {
                    otherlv_30=(Token)match(input,31,FOLLOW_31_in_ruleUseCase1479); 

                        	newLeafNode(otherlv_30, grammarAccess.getUseCaseAccess().getTechnologyAndDataVariantsKeyword_8_0());
                        
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:668:1: ( (lv_variants_31_0= ruleVariant ) )+
                    int cnt15=0;
                    loop15:
                    do {
                        int alt15=2;
                        int LA15_0 = input.LA(1);

                        if ( (LA15_0==RULE_INT||LA15_0==36) ) {
                            alt15=1;
                        }


                        switch (alt15) {
                    	case 1 :
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:669:1: (lv_variants_31_0= ruleVariant )
                    	    {
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:669:1: (lv_variants_31_0= ruleVariant )
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:670:3: lv_variants_31_0= ruleVariant
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getVariantsVariantParserRuleCall_8_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleVariant_in_ruleUseCase1500);
                    	    lv_variants_31_0=ruleVariant();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"variants",
                    	            		lv_variants_31_0, 
                    	            		"Variant");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt15 >= 1 ) break loop15;
                                EarlyExitException eee =
                                    new EarlyExitException(15, input);
                                throw eee;
                        }
                        cnt15++;
                    } while (true);


                    }
                    break;

            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:686:5: (otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==32) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:686:7: otherlv_32= 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+
                    {
                    otherlv_32=(Token)match(input,32,FOLLOW_32_in_ruleUseCase1516); 

                        	newLeafNode(otherlv_32, grammarAccess.getUseCaseAccess().getOpenIssuesKeyword_9_0());
                        
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:690:1: ( (lv_issues_33_0= ruleIssue ) )+
                    int cnt17=0;
                    loop17:
                    do {
                        int alt17=2;
                        int LA17_0 = input.LA(1);

                        if ( (LA17_0==RULE_UPID) ) {
                            alt17=1;
                        }


                        switch (alt17) {
                    	case 1 :
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:691:1: (lv_issues_33_0= ruleIssue )
                    	    {
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:691:1: (lv_issues_33_0= ruleIssue )
                    	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:692:3: lv_issues_33_0= ruleIssue
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getUseCaseAccess().getIssuesIssueParserRuleCall_9_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleIssue_in_ruleUseCase1537);
                    	    lv_issues_33_0=ruleIssue();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getUseCaseRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"issues",
                    	            		lv_issues_33_0, 
                    	            		"Issue");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt17 >= 1 ) break loop17;
                                EarlyExitException eee =
                                    new EarlyExitException(17, input);
                                throw eee;
                        }
                        cnt17++;
                    } while (true);


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUseCase"


    // $ANTLR start "entryRuleScope"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:716:1: entryRuleScope returns [EObject current=null] : iv_ruleScope= ruleScope EOF ;
    public final EObject entryRuleScope() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScope = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:717:2: (iv_ruleScope= ruleScope EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:718:2: iv_ruleScope= ruleScope EOF
            {
             newCompositeNode(grammarAccess.getScopeRule()); 
            pushFollow(FOLLOW_ruleScope_in_entryRuleScope1576);
            iv_ruleScope=ruleScope();

            state._fsp--;

             current =iv_ruleScope; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScope1586); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleScope"


    // $ANTLR start "ruleScope"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:725:1: ruleScope returns [EObject current=null] : ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) ) ;
    public final EObject ruleScope() throws RecognitionException {
        EObject current = null;

        Enumerator lv_visibility_0_0 = null;

        Enumerator lv_type_1_0 = null;

        EObject lv_internalActor_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:728:28: ( ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:729:1: ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:729:1: ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:729:2: ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:729:2: ( (lv_visibility_0_0= ruleVisibility ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( ((LA19_0>=48 && LA19_0<=49)) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:730:1: (lv_visibility_0_0= ruleVisibility )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:730:1: (lv_visibility_0_0= ruleVisibility )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:731:3: lv_visibility_0_0= ruleVisibility
                    {
                     
                    	        newCompositeNode(grammarAccess.getScopeAccess().getVisibilityVisibilityEnumRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleVisibility_in_ruleScope1632);
                    lv_visibility_0_0=ruleVisibility();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getScopeRule());
                    	        }
                           		set(
                           			current, 
                           			"visibility",
                            		lv_visibility_0_0, 
                            		"Visibility");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:747:3: ( (lv_type_1_0= ruleScopeType ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( ((LA20_0>=45 && LA20_0<=47)) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:748:1: (lv_type_1_0= ruleScopeType )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:748:1: (lv_type_1_0= ruleScopeType )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:749:3: lv_type_1_0= ruleScopeType
                    {
                     
                    	        newCompositeNode(grammarAccess.getScopeAccess().getTypeScopeTypeEnumRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleScopeType_in_ruleScope1654);
                    lv_type_1_0=ruleScopeType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getScopeRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_1_0, 
                            		"ScopeType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:765:3: ( (lv_internalActor_2_0= ruleActor ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:766:1: (lv_internalActor_2_0= ruleActor )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:766:1: (lv_internalActor_2_0= ruleActor )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:767:3: lv_internalActor_2_0= ruleActor
            {
             
            	        newCompositeNode(grammarAccess.getScopeAccess().getInternalActorActorParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleActor_in_ruleScope1676);
            lv_internalActor_2_0=ruleActor();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getScopeRule());
            	        }
                   		set(
                   			current, 
                   			"internalActor",
                    		lv_internalActor_2_0, 
                    		"Actor");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScope"


    // $ANTLR start "entryRuleActor"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:791:1: entryRuleActor returns [EObject current=null] : iv_ruleActor= ruleActor EOF ;
    public final EObject entryRuleActor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActor = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:792:2: (iv_ruleActor= ruleActor EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:793:2: iv_ruleActor= ruleActor EOF
            {
             newCompositeNode(grammarAccess.getActorRule()); 
            pushFollow(FOLLOW_ruleActor_in_entryRuleActor1712);
            iv_ruleActor=ruleActor();

            state._fsp--;

             current =iv_ruleActor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActor1722); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActor"


    // $ANTLR start "ruleActor"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:800:1: ruleActor returns [EObject current=null] : ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )? ) ;
    public final EObject ruleActor() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        AntlrDatatypeRuleToken lv_description_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:803:28: ( ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )? ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:804:1: ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )? )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:804:1: ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )? )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:804:2: ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )?
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:804:2: ( (lv_name_0_0= ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:805:1: (lv_name_0_0= ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:805:1: (lv_name_0_0= ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:806:3: lv_name_0_0= ruleNAME
            {
             
            	        newCompositeNode(grammarAccess.getActorAccess().getNameNAMEParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleActor1768);
            lv_name_0_0=ruleNAME();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getActorRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"NAME");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:822:2: (otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==16) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:822:4: otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) )
                    {
                    otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleActor1781); 

                        	newLeafNode(otherlv_1, grammarAccess.getActorAccess().getColonKeyword_1_0());
                        
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:826:1: ( (lv_description_2_0= rulePlainText ) )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:827:1: (lv_description_2_0= rulePlainText )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:827:1: (lv_description_2_0= rulePlainText )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:828:3: lv_description_2_0= rulePlainText
                    {
                     
                    	        newCompositeNode(grammarAccess.getActorAccess().getDescriptionPlainTextParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulePlainText_in_ruleActor1802);
                    lv_description_2_0=rulePlainText();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActorRule());
                    	        }
                           		set(
                           			current, 
                           			"description",
                            		lv_description_2_0, 
                            		"PlainText");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActor"


    // $ANTLR start "entryRuleInterest"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:852:1: entryRuleInterest returns [EObject current=null] : iv_ruleInterest= ruleInterest EOF ;
    public final EObject entryRuleInterest() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInterest = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:853:2: (iv_ruleInterest= ruleInterest EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:854:2: iv_ruleInterest= ruleInterest EOF
            {
             newCompositeNode(grammarAccess.getInterestRule()); 
            pushFollow(FOLLOW_ruleInterest_in_entryRuleInterest1840);
            iv_ruleInterest=ruleInterest();

            state._fsp--;

             current =iv_ruleInterest; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInterest1850); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInterest"


    // $ANTLR start "ruleInterest"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:861:1: ruleInterest returns [EObject current=null] : ( ( ( ruleNAME ) ) otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) ) ;
    public final EObject ruleInterest() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_description_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:864:28: ( ( ( ( ruleNAME ) ) otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:865:1: ( ( ( ruleNAME ) ) otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:865:1: ( ( ( ruleNAME ) ) otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:865:2: ( ( ruleNAME ) ) otherlv_1= ':' ( (lv_description_2_0= rulePlainText ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:865:2: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:866:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:866:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:867:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getInterestRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getInterestAccess().getStakeholderActorCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleInterest1898);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleInterest1910); 

                	newLeafNode(otherlv_1, grammarAccess.getInterestAccess().getColonKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:884:1: ( (lv_description_2_0= rulePlainText ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:885:1: (lv_description_2_0= rulePlainText )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:885:1: (lv_description_2_0= rulePlainText )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:886:3: lv_description_2_0= rulePlainText
            {
             
            	        newCompositeNode(grammarAccess.getInterestAccess().getDescriptionPlainTextParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleInterest1931);
            lv_description_2_0=rulePlainText();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInterestRule());
            	        }
                   		set(
                   			current, 
                   			"description",
                    		lv_description_2_0, 
                    		"PlainText");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInterest"


    // $ANTLR start "entryRuleState"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:910:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
    public final EObject entryRuleState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleState = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:911:2: (iv_ruleState= ruleState EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:912:2: iv_ruleState= ruleState EOF
            {
             newCompositeNode(grammarAccess.getStateRule()); 
            pushFollow(FOLLOW_ruleState_in_entryRuleState1967);
            iv_ruleState=ruleState();

            state._fsp--;

             current =iv_ruleState; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleState1977); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleState"


    // $ANTLR start "ruleState"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:919:1: ruleState returns [EObject current=null] : ( (lv_name_0_0= rulePlainText ) ) ;
    public final EObject ruleState() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:922:28: ( ( (lv_name_0_0= rulePlainText ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:923:1: ( (lv_name_0_0= rulePlainText ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:923:1: ( (lv_name_0_0= rulePlainText ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:924:1: (lv_name_0_0= rulePlainText )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:924:1: (lv_name_0_0= rulePlainText )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:925:3: lv_name_0_0= rulePlainText
            {
             
            	        newCompositeNode(grammarAccess.getStateAccess().getNamePlainTextParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleState2022);
            lv_name_0_0=rulePlainText();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getStateRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"PlainText");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleState"


    // $ANTLR start "entryRuleCondition"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:949:1: entryRuleCondition returns [EObject current=null] : iv_ruleCondition= ruleCondition EOF ;
    public final EObject entryRuleCondition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCondition = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:950:2: (iv_ruleCondition= ruleCondition EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:951:2: iv_ruleCondition= ruleCondition EOF
            {
             newCompositeNode(grammarAccess.getConditionRule()); 
            pushFollow(FOLLOW_ruleCondition_in_entryRuleCondition2057);
            iv_ruleCondition=ruleCondition();

            state._fsp--;

             current =iv_ruleCondition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCondition2067); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCondition"


    // $ANTLR start "ruleCondition"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:958:1: ruleCondition returns [EObject current=null] : ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= ruleState ) ) ) ;
    public final EObject ruleCondition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_description_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:961:28: ( ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= ruleState ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:962:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= ruleState ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:962:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= ruleState ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:962:2: ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= ruleState ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:962:2: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:963:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:963:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:964:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getConditionRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getConditionAccess().getActorActorCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleCondition2115);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleCondition2127); 

                	newLeafNode(otherlv_1, grammarAccess.getConditionAccess().getHyphenMinusKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:981:1: ( (lv_description_2_0= ruleState ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:982:1: (lv_description_2_0= ruleState )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:982:1: (lv_description_2_0= ruleState )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:983:3: lv_description_2_0= ruleState
            {
             
            	        newCompositeNode(grammarAccess.getConditionAccess().getDescriptionStateParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleState_in_ruleCondition2148);
            lv_description_2_0=ruleState();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConditionRule());
            	        }
                   		set(
                   			current, 
                   			"description",
                    		lv_description_2_0, 
                    		"State");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCondition"


    // $ANTLR start "entryRuleTrigger"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1007:1: entryRuleTrigger returns [EObject current=null] : iv_ruleTrigger= ruleTrigger EOF ;
    public final EObject entryRuleTrigger() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTrigger = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1008:2: (iv_ruleTrigger= ruleTrigger EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1009:2: iv_ruleTrigger= ruleTrigger EOF
            {
             newCompositeNode(grammarAccess.getTriggerRule()); 
            pushFollow(FOLLOW_ruleTrigger_in_entryRuleTrigger2184);
            iv_ruleTrigger=ruleTrigger();

            state._fsp--;

             current =iv_ruleTrigger; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTrigger2194); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTrigger"


    // $ANTLR start "ruleTrigger"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1016:1: ruleTrigger returns [EObject current=null] : ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) ) ;
    public final EObject ruleTrigger() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_action_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1019:28: ( ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1020:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1020:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1020:2: ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1020:2: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1021:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1021:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1022:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getTriggerRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getTriggerAccess().getActorActorCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleTrigger2242);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleTrigger2254); 

                	newLeafNode(otherlv_1, grammarAccess.getTriggerAccess().getHyphenMinusKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1039:1: ( (lv_action_2_0= ruleAction ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1040:1: (lv_action_2_0= ruleAction )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1040:1: (lv_action_2_0= ruleAction )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1041:3: lv_action_2_0= ruleAction
            {
             
            	        newCompositeNode(grammarAccess.getTriggerAccess().getActionActionParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleAction_in_ruleTrigger2275);
            lv_action_2_0=ruleAction();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTriggerRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_2_0, 
                    		"Action");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTrigger"


    // $ANTLR start "entryRuleActionStep"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1065:1: entryRuleActionStep returns [EObject current=null] : iv_ruleActionStep= ruleActionStep EOF ;
    public final EObject entryRuleActionStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActionStep = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1066:2: (iv_ruleActionStep= ruleActionStep EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1067:2: iv_ruleActionStep= ruleActionStep EOF
            {
             newCompositeNode(grammarAccess.getActionStepRule()); 
            pushFollow(FOLLOW_ruleActionStep_in_entryRuleActionStep2311);
            iv_ruleActionStep=ruleActionStep();

            state._fsp--;

             current =iv_ruleActionStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActionStep2321); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActionStep"


    // $ANTLR start "ruleActionStep"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1074:1: ruleActionStep returns [EObject current=null] : ( ( (lv_name_0_0= ruleORD ) ) otherlv_1= '.' ( ( ruleNAME ) ) otherlv_3= '-' ( (lv_action_4_0= ruleAction ) ) ) ;
    public final EObject ruleActionStep() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_action_4_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1077:28: ( ( ( (lv_name_0_0= ruleORD ) ) otherlv_1= '.' ( ( ruleNAME ) ) otherlv_3= '-' ( (lv_action_4_0= ruleAction ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1078:1: ( ( (lv_name_0_0= ruleORD ) ) otherlv_1= '.' ( ( ruleNAME ) ) otherlv_3= '-' ( (lv_action_4_0= ruleAction ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1078:1: ( ( (lv_name_0_0= ruleORD ) ) otherlv_1= '.' ( ( ruleNAME ) ) otherlv_3= '-' ( (lv_action_4_0= ruleAction ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1078:2: ( (lv_name_0_0= ruleORD ) ) otherlv_1= '.' ( ( ruleNAME ) ) otherlv_3= '-' ( (lv_action_4_0= ruleAction ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1078:2: ( (lv_name_0_0= ruleORD ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1079:1: (lv_name_0_0= ruleORD )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1079:1: (lv_name_0_0= ruleORD )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1080:3: lv_name_0_0= ruleORD
            {
             
            	        newCompositeNode(grammarAccess.getActionStepAccess().getNameORDParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleActionStep2367);
            lv_name_0_0=ruleORD();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getActionStepRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ORD");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleActionStep2379); 

                	newLeafNode(otherlv_1, grammarAccess.getActionStepAccess().getFullStopKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1100:1: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1101:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1101:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1102:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getActionStepRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getActionStepAccess().getActorActorCrossReference_2_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleActionStep2402);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,33,FOLLOW_33_in_ruleActionStep2414); 

                	newLeafNode(otherlv_3, grammarAccess.getActionStepAccess().getHyphenMinusKeyword_3());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1119:1: ( (lv_action_4_0= ruleAction ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1120:1: (lv_action_4_0= ruleAction )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1120:1: (lv_action_4_0= ruleAction )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1121:3: lv_action_4_0= ruleAction
            {
             
            	        newCompositeNode(grammarAccess.getActionStepAccess().getActionActionParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleAction_in_ruleActionStep2435);
            lv_action_4_0=ruleAction();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getActionStepRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_4_0, 
                    		"Action");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActionStep"


    // $ANTLR start "entryRuleAction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1145:1: entryRuleAction returns [EObject current=null] : iv_ruleAction= ruleAction EOF ;
    public final EObject entryRuleAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAction = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1146:2: (iv_ruleAction= ruleAction EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1147:2: iv_ruleAction= ruleAction EOF
            {
             newCompositeNode(grammarAccess.getActionRule()); 
            pushFollow(FOLLOW_ruleAction_in_entryRuleAction2471);
            iv_ruleAction=ruleAction();

            state._fsp--;

             current =iv_ruleAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAction2481); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAction"


    // $ANTLR start "ruleAction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1154:1: ruleAction returns [EObject current=null] : (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction ) ;
    public final EObject ruleAction() throws RecognitionException {
        EObject current = null;

        EObject this_SubGoal_0 = null;

        EObject this_Interaction_1 = null;

        EObject this_AnyAction_2 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1157:28: ( (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1158:1: (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1158:1: (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction )
            int alt22=3;
            alt22 = dfa22.predict(input);
            switch (alt22) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1159:5: this_SubGoal_0= ruleSubGoal
                    {
                     
                            newCompositeNode(grammarAccess.getActionAccess().getSubGoalParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSubGoal_in_ruleAction2528);
                    this_SubGoal_0=ruleSubGoal();

                    state._fsp--;

                     
                            current = this_SubGoal_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1169:5: this_Interaction_1= ruleInteraction
                    {
                     
                            newCompositeNode(grammarAccess.getActionAccess().getInteractionParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleInteraction_in_ruleAction2555);
                    this_Interaction_1=ruleInteraction();

                    state._fsp--;

                     
                            current = this_Interaction_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1179:5: this_AnyAction_2= ruleAnyAction
                    {
                     
                            newCompositeNode(grammarAccess.getActionAccess().getAnyActionParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleAnyAction_in_ruleAction2582);
                    this_AnyAction_2=ruleAnyAction();

                    state._fsp--;

                     
                            current = this_AnyAction_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAction"


    // $ANTLR start "entryRuleAnyAction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1195:1: entryRuleAnyAction returns [EObject current=null] : iv_ruleAnyAction= ruleAnyAction EOF ;
    public final EObject entryRuleAnyAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnyAction = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1196:2: (iv_ruleAnyAction= ruleAnyAction EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1197:2: iv_ruleAnyAction= ruleAnyAction EOF
            {
             newCompositeNode(grammarAccess.getAnyActionRule()); 
            pushFollow(FOLLOW_ruleAnyAction_in_entryRuleAnyAction2617);
            iv_ruleAnyAction=ruleAnyAction();

            state._fsp--;

             current =iv_ruleAnyAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnyAction2627); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnyAction"


    // $ANTLR start "ruleAnyAction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1204:1: ruleAnyAction returns [EObject current=null] : ( (lv_description_0_0= rulePlainText ) ) ;
    public final EObject ruleAnyAction() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_description_0_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1207:28: ( ( (lv_description_0_0= rulePlainText ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1208:1: ( (lv_description_0_0= rulePlainText ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1208:1: ( (lv_description_0_0= rulePlainText ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1209:1: (lv_description_0_0= rulePlainText )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1209:1: (lv_description_0_0= rulePlainText )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1210:3: lv_description_0_0= rulePlainText
            {
             
            	        newCompositeNode(grammarAccess.getAnyActionAccess().getDescriptionPlainTextParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleAnyAction2672);
            lv_description_0_0=rulePlainText();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAnyActionRule());
            	        }
                   		set(
                   			current, 
                   			"description",
                    		lv_description_0_0, 
                    		"PlainText");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnyAction"


    // $ANTLR start "entryRuleSubGoal"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1234:1: entryRuleSubGoal returns [EObject current=null] : iv_ruleSubGoal= ruleSubGoal EOF ;
    public final EObject entryRuleSubGoal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubGoal = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1235:2: (iv_ruleSubGoal= ruleSubGoal EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1236:2: iv_ruleSubGoal= ruleSubGoal EOF
            {
             newCompositeNode(grammarAccess.getSubGoalRule()); 
            pushFollow(FOLLOW_ruleSubGoal_in_entryRuleSubGoal2707);
            iv_ruleSubGoal=ruleSubGoal();

            state._fsp--;

             current =iv_ruleSubGoal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubGoal2717); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubGoal"


    // $ANTLR start "ruleSubGoal"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1243:1: ruleSubGoal returns [EObject current=null] : ( ( ruleNAME ) ) ;
    public final EObject ruleSubGoal() throws RecognitionException {
        EObject current = null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1246:28: ( ( ( ruleNAME ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1247:1: ( ( ruleNAME ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1247:1: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1248:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1248:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1249:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSubGoalRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getSubGoalAccess().getIncludeUseCaseUseCaseCrossReference_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleSubGoal2764);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubGoal"


    // $ANTLR start "entryRuleInteraction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1270:1: entryRuleInteraction returns [EObject current=null] : iv_ruleInteraction= ruleInteraction EOF ;
    public final EObject entryRuleInteraction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInteraction = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1271:2: (iv_ruleInteraction= ruleInteraction EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1272:2: iv_ruleInteraction= ruleInteraction EOF
            {
             newCompositeNode(grammarAccess.getInteractionRule()); 
            pushFollow(FOLLOW_ruleInteraction_in_entryRuleInteraction2799);
            iv_ruleInteraction=ruleInteraction();

            state._fsp--;

             current =iv_ruleInteraction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInteraction2809); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInteraction"


    // $ANTLR start "ruleInteraction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1279:1: ruleInteraction returns [EObject current=null] : ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) ) ;
    public final EObject ruleInteraction() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_description_0_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1282:28: ( ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1283:1: ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1283:1: ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1283:2: ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1283:2: ( (lv_description_0_0= rulePlainText ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1284:1: (lv_description_0_0= rulePlainText )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1284:1: (lv_description_0_0= rulePlainText )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1285:3: lv_description_0_0= rulePlainText
            {
             
            	        newCompositeNode(grammarAccess.getInteractionAccess().getDescriptionPlainTextParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleInteraction2855);
            lv_description_0_0=rulePlainText();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInteractionRule());
            	        }
                   		set(
                   			current, 
                   			"description",
                    		lv_description_0_0, 
                    		"PlainText");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1301:2: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1302:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1302:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1303:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getInteractionRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getInteractionAccess().getSubjectDataCrossReference_1_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleInteraction2878);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInteraction"


    // $ANTLR start "entryRuleSingleStepSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1324:1: entryRuleSingleStepSelector returns [EObject current=null] : iv_ruleSingleStepSelector= ruleSingleStepSelector EOF ;
    public final EObject entryRuleSingleStepSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSingleStepSelector = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1325:2: (iv_ruleSingleStepSelector= ruleSingleStepSelector EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1326:2: iv_ruleSingleStepSelector= ruleSingleStepSelector EOF
            {
             newCompositeNode(grammarAccess.getSingleStepSelectorRule()); 
            pushFollow(FOLLOW_ruleSingleStepSelector_in_entryRuleSingleStepSelector2914);
            iv_ruleSingleStepSelector=ruleSingleStepSelector();

            state._fsp--;

             current =iv_ruleSingleStepSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSingleStepSelector2924); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSingleStepSelector"


    // $ANTLR start "ruleSingleStepSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1333:1: ruleSingleStepSelector returns [EObject current=null] : ( ( ruleORD ) ) ;
    public final EObject ruleSingleStepSelector() throws RecognitionException {
        EObject current = null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1336:28: ( ( ( ruleORD ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1337:1: ( ( ruleORD ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1337:1: ( ( ruleORD ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1338:1: ( ruleORD )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1338:1: ( ruleORD )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1339:3: ruleORD
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSingleStepSelectorRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getSingleStepSelectorAccess().getStepActionStepCrossReference_0()); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleSingleStepSelector2971);
            ruleORD();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSingleStepSelector"


    // $ANTLR start "entryRuleStepRangeSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1360:1: entryRuleStepRangeSelector returns [EObject current=null] : iv_ruleStepRangeSelector= ruleStepRangeSelector EOF ;
    public final EObject entryRuleStepRangeSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStepRangeSelector = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1361:2: (iv_ruleStepRangeSelector= ruleStepRangeSelector EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1362:2: iv_ruleStepRangeSelector= ruleStepRangeSelector EOF
            {
             newCompositeNode(grammarAccess.getStepRangeSelectorRule()); 
            pushFollow(FOLLOW_ruleStepRangeSelector_in_entryRuleStepRangeSelector3006);
            iv_ruleStepRangeSelector=ruleStepRangeSelector();

            state._fsp--;

             current =iv_ruleStepRangeSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStepRangeSelector3016); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStepRangeSelector"


    // $ANTLR start "ruleStepRangeSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1369:1: ruleStepRangeSelector returns [EObject current=null] : ( ( ( ruleORD ) ) otherlv_1= '-' ( ( ruleORD ) ) ) ;
    public final EObject ruleStepRangeSelector() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1372:28: ( ( ( ( ruleORD ) ) otherlv_1= '-' ( ( ruleORD ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1373:1: ( ( ( ruleORD ) ) otherlv_1= '-' ( ( ruleORD ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1373:1: ( ( ( ruleORD ) ) otherlv_1= '-' ( ( ruleORD ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1373:2: ( ( ruleORD ) ) otherlv_1= '-' ( ( ruleORD ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1373:2: ( ( ruleORD ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1374:1: ( ruleORD )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1374:1: ( ruleORD )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1375:3: ruleORD
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getStepRangeSelectorRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getStepRangeSelectorAccess().getFromActionStepCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleStepRangeSelector3064);
            ruleORD();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleStepRangeSelector3076); 

                	newLeafNode(otherlv_1, grammarAccess.getStepRangeSelectorAccess().getHyphenMinusKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1392:1: ( ( ruleORD ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1393:1: ( ruleORD )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1393:1: ( ruleORD )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1394:3: ruleORD
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getStepRangeSelectorRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getStepRangeSelectorAccess().getToActionStepCrossReference_2_0()); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleStepRangeSelector3099);
            ruleORD();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStepRangeSelector"


    // $ANTLR start "entryRuleAbstractStepSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1415:1: entryRuleAbstractStepSelector returns [EObject current=null] : iv_ruleAbstractStepSelector= ruleAbstractStepSelector EOF ;
    public final EObject entryRuleAbstractStepSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractStepSelector = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1416:2: (iv_ruleAbstractStepSelector= ruleAbstractStepSelector EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1417:2: iv_ruleAbstractStepSelector= ruleAbstractStepSelector EOF
            {
             newCompositeNode(grammarAccess.getAbstractStepSelectorRule()); 
            pushFollow(FOLLOW_ruleAbstractStepSelector_in_entryRuleAbstractStepSelector3135);
            iv_ruleAbstractStepSelector=ruleAbstractStepSelector();

            state._fsp--;

             current =iv_ruleAbstractStepSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractStepSelector3145); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractStepSelector"


    // $ANTLR start "ruleAbstractStepSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1424:1: ruleAbstractStepSelector returns [EObject current=null] : (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector ) ;
    public final EObject ruleAbstractStepSelector() throws RecognitionException {
        EObject current = null;

        EObject this_SingleStepSelector_0 = null;

        EObject this_StepRangeSelector_1 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1427:28: ( (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1428:1: (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1428:1: (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==RULE_INT) ) {
                int LA23_1 = input.LA(2);

                if ( (LA23_1==EOF||(LA23_1>=RULE_ID && LA23_1<=RULE_UPID)||LA23_1==35) ) {
                    alt23=1;
                }
                else if ( (LA23_1==33) ) {
                    alt23=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 23, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1429:5: this_SingleStepSelector_0= ruleSingleStepSelector
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractStepSelectorAccess().getSingleStepSelectorParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSingleStepSelector_in_ruleAbstractStepSelector3192);
                    this_SingleStepSelector_0=ruleSingleStepSelector();

                    state._fsp--;

                     
                            current = this_SingleStepSelector_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1439:5: this_StepRangeSelector_1= ruleStepRangeSelector
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractStepSelectorAccess().getStepRangeSelectorParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleStepRangeSelector_in_ruleAbstractStepSelector3219);
                    this_StepRangeSelector_1=ruleStepRangeSelector();

                    state._fsp--;

                     
                            current = this_StepRangeSelector_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractStepSelector"


    // $ANTLR start "entryRuleStepListSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1455:1: entryRuleStepListSelector returns [EObject current=null] : iv_ruleStepListSelector= ruleStepListSelector EOF ;
    public final EObject entryRuleStepListSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStepListSelector = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1456:2: (iv_ruleStepListSelector= ruleStepListSelector EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1457:2: iv_ruleStepListSelector= ruleStepListSelector EOF
            {
             newCompositeNode(grammarAccess.getStepListSelectorRule()); 
            pushFollow(FOLLOW_ruleStepListSelector_in_entryRuleStepListSelector3254);
            iv_ruleStepListSelector=ruleStepListSelector();

            state._fsp--;

             current =iv_ruleStepListSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStepListSelector3264); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStepListSelector"


    // $ANTLR start "ruleStepListSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1464:1: ruleStepListSelector returns [EObject current=null] : ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) (otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* ) ;
    public final EObject ruleStepListSelector() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_selectors_0_0 = null;

        EObject lv_selectors_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1467:28: ( ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) (otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1468:1: ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) (otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1468:1: ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) (otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1468:2: ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) (otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )*
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1468:2: ( (lv_selectors_0_0= ruleAbstractStepSelector ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1469:1: (lv_selectors_0_0= ruleAbstractStepSelector )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1469:1: (lv_selectors_0_0= ruleAbstractStepSelector )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1470:3: lv_selectors_0_0= ruleAbstractStepSelector
            {
             
            	        newCompositeNode(grammarAccess.getStepListSelectorAccess().getSelectorsAbstractStepSelectorParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3310);
            lv_selectors_0_0=ruleAbstractStepSelector();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getStepListSelectorRule());
            	        }
                   		add(
                   			current, 
                   			"selectors",
                    		lv_selectors_0_0, 
                    		"AbstractStepSelector");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1486:2: (otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==35) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1486:4: otherlv_1= ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) )
            	    {
            	    otherlv_1=(Token)match(input,35,FOLLOW_35_in_ruleStepListSelector3323); 

            	        	newLeafNode(otherlv_1, grammarAccess.getStepListSelectorAccess().getCommaKeyword_1_0());
            	        
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1490:1: ( (lv_selectors_2_0= ruleAbstractStepSelector ) )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1491:1: (lv_selectors_2_0= ruleAbstractStepSelector )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1491:1: (lv_selectors_2_0= ruleAbstractStepSelector )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1492:3: lv_selectors_2_0= ruleAbstractStepSelector
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getStepListSelectorAccess().getSelectorsAbstractStepSelectorParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3344);
            	    lv_selectors_2_0=ruleAbstractStepSelector();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getStepListSelectorRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"selectors",
            	            		lv_selectors_2_0, 
            	            		"AbstractStepSelector");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStepListSelector"


    // $ANTLR start "entryRuleAllStepsSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1516:1: entryRuleAllStepsSelector returns [EObject current=null] : iv_ruleAllStepsSelector= ruleAllStepsSelector EOF ;
    public final EObject entryRuleAllStepsSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAllStepsSelector = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1517:2: (iv_ruleAllStepsSelector= ruleAllStepsSelector EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1518:2: iv_ruleAllStepsSelector= ruleAllStepsSelector EOF
            {
             newCompositeNode(grammarAccess.getAllStepsSelectorRule()); 
            pushFollow(FOLLOW_ruleAllStepsSelector_in_entryRuleAllStepsSelector3382);
            iv_ruleAllStepsSelector=ruleAllStepsSelector();

            state._fsp--;

             current =iv_ruleAllStepsSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAllStepsSelector3392); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAllStepsSelector"


    // $ANTLR start "ruleAllStepsSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1525:1: ruleAllStepsSelector returns [EObject current=null] : ( (lv_anywhere_0_0= '*' ) ) ;
    public final EObject ruleAllStepsSelector() throws RecognitionException {
        EObject current = null;

        Token lv_anywhere_0_0=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1528:28: ( ( (lv_anywhere_0_0= '*' ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1529:1: ( (lv_anywhere_0_0= '*' ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1529:1: ( (lv_anywhere_0_0= '*' ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1530:1: (lv_anywhere_0_0= '*' )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1530:1: (lv_anywhere_0_0= '*' )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1531:3: lv_anywhere_0_0= '*'
            {
            lv_anywhere_0_0=(Token)match(input,36,FOLLOW_36_in_ruleAllStepsSelector3434); 

                    newLeafNode(lv_anywhere_0_0, grammarAccess.getAllStepsSelectorAccess().getAnywhereAsteriskKeyword_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAllStepsSelectorRule());
            	        }
                   		setWithLastConsumed(current, "anywhere", true, "*");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAllStepsSelector"


    // $ANTLR start "entryRuleStepSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1552:1: entryRuleStepSelector returns [EObject current=null] : iv_ruleStepSelector= ruleStepSelector EOF ;
    public final EObject entryRuleStepSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStepSelector = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1553:2: (iv_ruleStepSelector= ruleStepSelector EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1554:2: iv_ruleStepSelector= ruleStepSelector EOF
            {
             newCompositeNode(grammarAccess.getStepSelectorRule()); 
            pushFollow(FOLLOW_ruleStepSelector_in_entryRuleStepSelector3482);
            iv_ruleStepSelector=ruleStepSelector();

            state._fsp--;

             current =iv_ruleStepSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStepSelector3492); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStepSelector"


    // $ANTLR start "ruleStepSelector"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1561:1: ruleStepSelector returns [EObject current=null] : (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector ) ;
    public final EObject ruleStepSelector() throws RecognitionException {
        EObject current = null;

        EObject this_StepListSelector_0 = null;

        EObject this_AllStepsSelector_1 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1564:28: ( (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1565:1: (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1565:1: (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector )
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==RULE_INT) ) {
                alt25=1;
            }
            else if ( (LA25_0==36) ) {
                alt25=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;
            }
            switch (alt25) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1566:5: this_StepListSelector_0= ruleStepListSelector
                    {
                     
                            newCompositeNode(grammarAccess.getStepSelectorAccess().getStepListSelectorParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleStepListSelector_in_ruleStepSelector3539);
                    this_StepListSelector_0=ruleStepListSelector();

                    state._fsp--;

                     
                            current = this_StepListSelector_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1576:5: this_AllStepsSelector_1= ruleAllStepsSelector
                    {
                     
                            newCompositeNode(grammarAccess.getStepSelectorAccess().getAllStepsSelectorParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleAllStepsSelector_in_ruleStepSelector3566);
                    this_AllStepsSelector_1=ruleAllStepsSelector();

                    state._fsp--;

                     
                            current = this_AllStepsSelector_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStepSelector"


    // $ANTLR start "entryRuleExtensionEndAction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1592:1: entryRuleExtensionEndAction returns [EObject current=null] : iv_ruleExtensionEndAction= ruleExtensionEndAction EOF ;
    public final EObject entryRuleExtensionEndAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionEndAction = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1593:2: (iv_ruleExtensionEndAction= ruleExtensionEndAction EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1594:2: iv_ruleExtensionEndAction= ruleExtensionEndAction EOF
            {
             newCompositeNode(grammarAccess.getExtensionEndActionRule()); 
            pushFollow(FOLLOW_ruleExtensionEndAction_in_entryRuleExtensionEndAction3601);
            iv_ruleExtensionEndAction=ruleExtensionEndAction();

            state._fsp--;

             current =iv_ruleExtensionEndAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionEndAction3611); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionEndAction"


    // $ANTLR start "ruleExtensionEndAction"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1601:1: ruleExtensionEndAction returns [EObject current=null] : (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto ) ;
    public final EObject ruleExtensionEndAction() throws RecognitionException {
        EObject current = null;

        EObject this_ScenarioEnd_0 = null;

        EObject this_Goto_1 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1604:28: ( (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1605:1: (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1605:1: (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto )
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==37) ) {
                alt26=1;
            }
            else if ( (LA26_0==38) ) {
                alt26=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 26, 0, input);

                throw nvae;
            }
            switch (alt26) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1606:5: this_ScenarioEnd_0= ruleScenarioEnd
                    {
                     
                            newCompositeNode(grammarAccess.getExtensionEndActionAccess().getScenarioEndParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleScenarioEnd_in_ruleExtensionEndAction3658);
                    this_ScenarioEnd_0=ruleScenarioEnd();

                    state._fsp--;

                     
                            current = this_ScenarioEnd_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1616:5: this_Goto_1= ruleGoto
                    {
                     
                            newCompositeNode(grammarAccess.getExtensionEndActionAccess().getGotoParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleGoto_in_ruleExtensionEndAction3685);
                    this_Goto_1=ruleGoto();

                    state._fsp--;

                     
                            current = this_Goto_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionEndAction"


    // $ANTLR start "entryRuleScenarioEnd"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1632:1: entryRuleScenarioEnd returns [EObject current=null] : iv_ruleScenarioEnd= ruleScenarioEnd EOF ;
    public final EObject entryRuleScenarioEnd() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScenarioEnd = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1633:2: (iv_ruleScenarioEnd= ruleScenarioEnd EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1634:2: iv_ruleScenarioEnd= ruleScenarioEnd EOF
            {
             newCompositeNode(grammarAccess.getScenarioEndRule()); 
            pushFollow(FOLLOW_ruleScenarioEnd_in_entryRuleScenarioEnd3720);
            iv_ruleScenarioEnd=ruleScenarioEnd();

            state._fsp--;

             current =iv_ruleScenarioEnd; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScenarioEnd3730); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleScenarioEnd"


    // $ANTLR start "ruleScenarioEnd"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1641:1: ruleScenarioEnd returns [EObject current=null] : (otherlv_0= 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) ) ;
    public final EObject ruleScenarioEnd() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Enumerator lv_result_1_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1644:28: ( (otherlv_0= 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1645:1: (otherlv_0= 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1645:1: (otherlv_0= 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1645:3: otherlv_0= 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) )
            {
            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleScenarioEnd3767); 

                	newLeafNode(otherlv_0, grammarAccess.getScenarioEndAccess().getUseCaseEndsWithKeyword_0());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1649:1: ( (lv_result_1_0= ruleScenarioResult ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1650:1: (lv_result_1_0= ruleScenarioResult )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1650:1: (lv_result_1_0= ruleScenarioResult )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1651:3: lv_result_1_0= ruleScenarioResult
            {
             
            	        newCompositeNode(grammarAccess.getScenarioEndAccess().getResultScenarioResultEnumRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleScenarioResult_in_ruleScenarioEnd3788);
            lv_result_1_0=ruleScenarioResult();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getScenarioEndRule());
            	        }
                   		set(
                   			current, 
                   			"result",
                    		lv_result_1_0, 
                    		"ScenarioResult");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScenarioEnd"


    // $ANTLR start "entryRuleGoto"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1675:1: entryRuleGoto returns [EObject current=null] : iv_ruleGoto= ruleGoto EOF ;
    public final EObject entryRuleGoto() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGoto = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1676:2: (iv_ruleGoto= ruleGoto EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1677:2: iv_ruleGoto= ruleGoto EOF
            {
             newCompositeNode(grammarAccess.getGotoRule()); 
            pushFollow(FOLLOW_ruleGoto_in_entryRuleGoto3824);
            iv_ruleGoto=ruleGoto();

            state._fsp--;

             current =iv_ruleGoto; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGoto3834); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGoto"


    // $ANTLR start "ruleGoto"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1684:1: ruleGoto returns [EObject current=null] : (otherlv_0= 'Use case continues with step' ( ( ruleORD ) ) ) ;
    public final EObject ruleGoto() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1687:28: ( (otherlv_0= 'Use case continues with step' ( ( ruleORD ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1688:1: (otherlv_0= 'Use case continues with step' ( ( ruleORD ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1688:1: (otherlv_0= 'Use case continues with step' ( ( ruleORD ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1688:3: otherlv_0= 'Use case continues with step' ( ( ruleORD ) )
            {
            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleGoto3871); 

                	newLeafNode(otherlv_0, grammarAccess.getGotoAccess().getUseCaseContinuesWithStepKeyword_0());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1692:1: ( ( ruleORD ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1693:1: ( ruleORD )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1693:1: ( ruleORD )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1694:3: ruleORD
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getGotoRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getGotoAccess().getNextStepActionStepCrossReference_1_0()); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleGoto3894);
            ruleORD();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGoto"


    // $ANTLR start "entryRuleExtensionStep"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1715:1: entryRuleExtensionStep returns [EObject current=null] : iv_ruleExtensionStep= ruleExtensionStep EOF ;
    public final EObject entryRuleExtensionStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionStep = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1716:2: (iv_ruleExtensionStep= ruleExtensionStep EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1717:2: iv_ruleExtensionStep= ruleExtensionStep EOF
            {
             newCompositeNode(grammarAccess.getExtensionStepRule()); 
            pushFollow(FOLLOW_ruleExtensionStep_in_entryRuleExtensionStep3930);
            iv_ruleExtensionStep=ruleExtensionStep();

            state._fsp--;

             current =iv_ruleExtensionStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionStep3940); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionStep"


    // $ANTLR start "ruleExtensionStep"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1724:1: ruleExtensionStep returns [EObject current=null] : ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) ) ;
    public final EObject ruleExtensionStep() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_action_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1727:28: ( ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1728:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1728:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1728:2: ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_action_2_0= ruleAction ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1728:2: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1729:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1729:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1730:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getExtensionStepRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getExtensionStepAccess().getActorActorCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleExtensionStep3988);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleExtensionStep4000); 

                	newLeafNode(otherlv_1, grammarAccess.getExtensionStepAccess().getHyphenMinusKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1747:1: ( (lv_action_2_0= ruleAction ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1748:1: (lv_action_2_0= ruleAction )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1748:1: (lv_action_2_0= ruleAction )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1749:3: lv_action_2_0= ruleAction
            {
             
            	        newCompositeNode(grammarAccess.getExtensionStepAccess().getActionActionParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleAction_in_ruleExtensionStep4021);
            lv_action_2_0=ruleAction();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtensionStepRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_2_0, 
                    		"Action");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionStep"


    // $ANTLR start "entryRuleExtensionEndStep"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1773:1: entryRuleExtensionEndStep returns [EObject current=null] : iv_ruleExtensionEndStep= ruleExtensionEndStep EOF ;
    public final EObject entryRuleExtensionEndStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionEndStep = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1774:2: (iv_ruleExtensionEndStep= ruleExtensionEndStep EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1775:2: iv_ruleExtensionEndStep= ruleExtensionEndStep EOF
            {
             newCompositeNode(grammarAccess.getExtensionEndStepRule()); 
            pushFollow(FOLLOW_ruleExtensionEndStep_in_entryRuleExtensionEndStep4057);
            iv_ruleExtensionEndStep=ruleExtensionEndStep();

            state._fsp--;

             current =iv_ruleExtensionEndStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionEndStep4067); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionEndStep"


    // $ANTLR start "ruleExtensionEndStep"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1782:1: ruleExtensionEndStep returns [EObject current=null] : ( (lv_action_0_0= ruleExtensionEndAction ) ) ;
    public final EObject ruleExtensionEndStep() throws RecognitionException {
        EObject current = null;

        EObject lv_action_0_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1785:28: ( ( (lv_action_0_0= ruleExtensionEndAction ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1786:1: ( (lv_action_0_0= ruleExtensionEndAction ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1786:1: ( (lv_action_0_0= ruleExtensionEndAction ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1787:1: (lv_action_0_0= ruleExtensionEndAction )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1787:1: (lv_action_0_0= ruleExtensionEndAction )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1788:3: lv_action_0_0= ruleExtensionEndAction
            {
             
            	        newCompositeNode(grammarAccess.getExtensionEndStepAccess().getActionExtensionEndActionParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleExtensionEndAction_in_ruleExtensionEndStep4112);
            lv_action_0_0=ruleExtensionEndAction();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtensionEndStepRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_0_0, 
                    		"ExtensionEndAction");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionEndStep"


    // $ANTLR start "entryRuleExtension"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1812:1: entryRuleExtension returns [EObject current=null] : iv_ruleExtension= ruleExtension EOF ;
    public final EObject entryRuleExtension() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtension = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1813:2: (iv_ruleExtension= ruleExtension EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1814:2: iv_ruleExtension= ruleExtension EOF
            {
             newCompositeNode(grammarAccess.getExtensionRule()); 
            pushFollow(FOLLOW_ruleExtension_in_entryRuleExtension4147);
            iv_ruleExtension=ruleExtension();

            state._fsp--;

             current =iv_ruleExtension; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtension4157); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtension"


    // $ANTLR start "ruleExtension"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1821:1: ruleExtension returns [EObject current=null] : ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) otherlv_2= ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) ) ;
    public final EObject ruleExtension() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_occurance_0_0 = null;

        EObject lv_condition_1_0 = null;

        EObject lv_steps_3_0 = null;

        EObject lv_steps_4_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1824:28: ( ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) otherlv_2= ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1825:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) otherlv_2= ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1825:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) otherlv_2= ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1825:2: ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) otherlv_2= ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1825:2: ( (lv_occurance_0_0= ruleStepSelector ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1826:1: (lv_occurance_0_0= ruleStepSelector )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1826:1: (lv_occurance_0_0= ruleStepSelector )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1827:3: lv_occurance_0_0= ruleStepSelector
            {
             
            	        newCompositeNode(grammarAccess.getExtensionAccess().getOccuranceStepSelectorParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleStepSelector_in_ruleExtension4203);
            lv_occurance_0_0=ruleStepSelector();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtensionRule());
            	        }
                   		set(
                   			current, 
                   			"occurance",
                    		lv_occurance_0_0, 
                    		"StepSelector");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1843:2: ( (lv_condition_1_0= ruleCondition ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1844:1: (lv_condition_1_0= ruleCondition )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1844:1: (lv_condition_1_0= ruleCondition )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1845:3: lv_condition_1_0= ruleCondition
            {
             
            	        newCompositeNode(grammarAccess.getExtensionAccess().getConditionConditionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleCondition_in_ruleExtension4224);
            lv_condition_1_0=ruleCondition();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtensionRule());
            	        }
                   		set(
                   			current, 
                   			"condition",
                    		lv_condition_1_0, 
                    		"Condition");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleExtension4236); 

                	newLeafNode(otherlv_2, grammarAccess.getExtensionAccess().getColonKeyword_2());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1865:1: ( (lv_steps_3_0= ruleExtensionStep ) )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==RULE_UPID) ) {
                    alt27=1;
                }


                switch (alt27) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1866:1: (lv_steps_3_0= ruleExtensionStep )
            	    {
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1866:1: (lv_steps_3_0= ruleExtensionStep )
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1867:3: lv_steps_3_0= ruleExtensionStep
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getExtensionAccess().getStepsExtensionStepParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleExtensionStep_in_ruleExtension4257);
            	    lv_steps_3_0=ruleExtensionStep();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getExtensionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"steps",
            	            		lv_steps_3_0, 
            	            		"ExtensionStep");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1883:3: ( (lv_steps_4_0= ruleExtensionEndStep ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1884:1: (lv_steps_4_0= ruleExtensionEndStep )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1884:1: (lv_steps_4_0= ruleExtensionEndStep )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1885:3: lv_steps_4_0= ruleExtensionEndStep
            {
             
            	        newCompositeNode(grammarAccess.getExtensionAccess().getStepsExtensionEndStepParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleExtensionEndStep_in_ruleExtension4279);
            lv_steps_4_0=ruleExtensionEndStep();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtensionRule());
            	        }
                   		add(
                   			current, 
                   			"steps",
                    		lv_steps_4_0, 
                    		"ExtensionEndStep");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtension"


    // $ANTLR start "entryRuleVariant"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1909:1: entryRuleVariant returns [EObject current=null] : iv_ruleVariant= ruleVariant EOF ;
    public final EObject entryRuleVariant() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariant = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1910:2: (iv_ruleVariant= ruleVariant EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1911:2: iv_ruleVariant= ruleVariant EOF
            {
             newCompositeNode(grammarAccess.getVariantRule()); 
            pushFollow(FOLLOW_ruleVariant_in_entryRuleVariant4315);
            iv_ruleVariant=ruleVariant();

            state._fsp--;

             current =iv_ruleVariant; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariant4325); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVariant"


    // $ANTLR start "ruleVariant"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1918:1: ruleVariant returns [EObject current=null] : ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) ) ;
    public final EObject ruleVariant() throws RecognitionException {
        EObject current = null;

        EObject lv_occurance_0_0 = null;

        AntlrDatatypeRuleToken lv_description_1_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1921:28: ( ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1922:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1922:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1922:2: ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1922:2: ( (lv_occurance_0_0= ruleStepSelector ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1923:1: (lv_occurance_0_0= ruleStepSelector )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1923:1: (lv_occurance_0_0= ruleStepSelector )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1924:3: lv_occurance_0_0= ruleStepSelector
            {
             
            	        newCompositeNode(grammarAccess.getVariantAccess().getOccuranceStepSelectorParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleStepSelector_in_ruleVariant4371);
            lv_occurance_0_0=ruleStepSelector();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariantRule());
            	        }
                   		set(
                   			current, 
                   			"occurance",
                    		lv_occurance_0_0, 
                    		"StepSelector");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1940:2: ( (lv_description_1_0= rulePlainText ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1941:1: (lv_description_1_0= rulePlainText )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1941:1: (lv_description_1_0= rulePlainText )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1942:3: lv_description_1_0= rulePlainText
            {
             
            	        newCompositeNode(grammarAccess.getVariantAccess().getDescriptionPlainTextParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleVariant4392);
            lv_description_1_0=rulePlainText();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVariantRule());
            	        }
                   		set(
                   			current, 
                   			"description",
                    		lv_description_1_0, 
                    		"PlainText");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVariant"


    // $ANTLR start "entryRuleIssue"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1966:1: entryRuleIssue returns [EObject current=null] : iv_ruleIssue= ruleIssue EOF ;
    public final EObject entryRuleIssue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIssue = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1967:2: (iv_ruleIssue= ruleIssue EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1968:2: iv_ruleIssue= ruleIssue EOF
            {
             newCompositeNode(grammarAccess.getIssueRule()); 
            pushFollow(FOLLOW_ruleIssue_in_entryRuleIssue4428);
            iv_ruleIssue=ruleIssue();

            state._fsp--;

             current =iv_ruleIssue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIssue4438); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIssue"


    // $ANTLR start "ruleIssue"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1975:1: ruleIssue returns [EObject current=null] : ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) otherlv_3= '?' ) ;
    public final EObject ruleIssue() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_description_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1978:28: ( ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) otherlv_3= '?' ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1979:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) otherlv_3= '?' )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1979:1: ( ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) otherlv_3= '?' )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1979:2: ( ( ruleNAME ) ) otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) otherlv_3= '?'
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1979:2: ( ( ruleNAME ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1980:1: ( ruleNAME )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1980:1: ( ruleNAME )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1981:3: ruleNAME
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getIssueRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getIssueAccess().getActorActorCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleIssue4486);
            ruleNAME();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleIssue4498); 

                	newLeafNode(otherlv_1, grammarAccess.getIssueAccess().getHyphenMinusKeyword_1());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1998:1: ( (lv_description_2_0= rulePlainText ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1999:1: (lv_description_2_0= rulePlainText )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:1999:1: (lv_description_2_0= rulePlainText )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2000:3: lv_description_2_0= rulePlainText
            {
             
            	        newCompositeNode(grammarAccess.getIssueAccess().getDescriptionPlainTextParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleIssue4519);
            lv_description_2_0=rulePlainText();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIssueRule());
            	        }
                   		set(
                   			current, 
                   			"description",
                    		lv_description_2_0, 
                    		"PlainText");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,39,FOLLOW_39_in_ruleIssue4531); 

                	newLeafNode(otherlv_3, grammarAccess.getIssueAccess().getQuestionMarkKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIssue"


    // $ANTLR start "entryRuleORD"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2028:1: entryRuleORD returns [String current=null] : iv_ruleORD= ruleORD EOF ;
    public final String entryRuleORD() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleORD = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2029:2: (iv_ruleORD= ruleORD EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2030:2: iv_ruleORD= ruleORD EOF
            {
             newCompositeNode(grammarAccess.getORDRule()); 
            pushFollow(FOLLOW_ruleORD_in_entryRuleORD4568);
            iv_ruleORD=ruleORD();

            state._fsp--;

             current =iv_ruleORD.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleORD4579); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleORD"


    // $ANTLR start "ruleORD"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2037:1: ruleORD returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_INT_0= RULE_INT ;
    public final AntlrDatatypeRuleToken ruleORD() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_INT_0=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2040:28: (this_INT_0= RULE_INT )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2041:5: this_INT_0= RULE_INT
            {
            this_INT_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleORD4618); 

            		current.merge(this_INT_0);
                
             
                newLeafNode(this_INT_0, grammarAccess.getORDAccess().getINTTerminalRuleCall()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleORD"


    // $ANTLR start "entryRulePlainText"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2056:1: entryRulePlainText returns [String current=null] : iv_rulePlainText= rulePlainText EOF ;
    public final String entryRulePlainText() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePlainText = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2057:2: (iv_rulePlainText= rulePlainText EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2058:2: iv_rulePlainText= rulePlainText EOF
            {
             newCompositeNode(grammarAccess.getPlainTextRule()); 
            pushFollow(FOLLOW_rulePlainText_in_entryRulePlainText4663);
            iv_rulePlainText=rulePlainText();

            state._fsp--;

             current =iv_rulePlainText.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlainText4674); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlainText"


    // $ANTLR start "rulePlainText"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2065:1: rulePlainText returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) ;
    public final AntlrDatatypeRuleToken rulePlainText() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token this_ID_1=null;
        Token kw=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2068:28: ( (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2069:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2069:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2069:6: this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText4714); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_0()); 
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2076:1: (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            loop28:
            do {
                int alt28=6;
                switch ( input.LA(1) ) {
                case RULE_ID:
                    {
                    alt28=1;
                    }
                    break;
                case 35:
                    {
                    alt28=2;
                    }
                    break;
                case 40:
                    {
                    alt28=3;
                    }
                    break;
                case 41:
                    {
                    alt28=4;
                    }
                    break;
                case 42:
                    {
                    alt28=5;
                    }
                    break;

                }

                switch (alt28) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2076:6: this_ID_1= RULE_ID
            	    {
            	    this_ID_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText4735); 

            	    		current.merge(this_ID_1);
            	        
            	     
            	        newLeafNode(this_ID_1, grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_1_0()); 
            	        

            	    }
            	    break;
            	case 2 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2085:2: kw= ','
            	    {
            	    kw=(Token)match(input,35,FOLLOW_35_in_rulePlainText4759); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getCommaKeyword_1_1()); 
            	        

            	    }
            	    break;
            	case 3 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2092:2: kw= '('
            	    {
            	    kw=(Token)match(input,40,FOLLOW_40_in_rulePlainText4778); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getLeftParenthesisKeyword_1_2()); 
            	        

            	    }
            	    break;
            	case 4 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2099:2: kw= ')'
            	    {
            	    kw=(Token)match(input,41,FOLLOW_41_in_rulePlainText4797); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getRightParenthesisKeyword_1_3()); 
            	        

            	    }
            	    break;
            	case 5 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2106:2: kw= '/'
            	    {
            	    kw=(Token)match(input,42,FOLLOW_42_in_rulePlainText4816); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getSolidusKeyword_1_4()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop28;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlainText"


    // $ANTLR start "entryRuleNAME"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2119:1: entryRuleNAME returns [String current=null] : iv_ruleNAME= ruleNAME EOF ;
    public final String entryRuleNAME() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNAME = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2120:2: (iv_ruleNAME= ruleNAME EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2121:2: iv_ruleNAME= ruleNAME EOF
            {
             newCompositeNode(grammarAccess.getNAMERule()); 
            pushFollow(FOLLOW_ruleNAME_in_entryRuleNAME4859);
            iv_ruleNAME=ruleNAME();

            state._fsp--;

             current =iv_ruleNAME.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNAME4870); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNAME"


    // $ANTLR start "ruleNAME"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2128:1: ruleNAME returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) ;
    public final AntlrDatatypeRuleToken ruleNAME() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_UPID_0=null;
        AntlrDatatypeRuleToken this_PlainText_1 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2131:28: ( (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2132:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2132:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2132:6: this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )?
            {
            this_UPID_0=(Token)match(input,RULE_UPID,FOLLOW_RULE_UPID_in_ruleNAME4910); 

            		current.merge(this_UPID_0);
                
             
                newLeafNode(this_UPID_0, grammarAccess.getNAMEAccess().getUPIDTerminalRuleCall_0()); 
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2139:1: (this_PlainText_1= rulePlainText )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==RULE_ID) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2140:5: this_PlainText_1= rulePlainText
                    {
                     
                            newCompositeNode(grammarAccess.getNAMEAccess().getPlainTextParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulePlainText_in_ruleNAME4938);
                    this_PlainText_1=rulePlainText();

                    state._fsp--;


                    		current.merge(this_PlainText_1);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNAME"


    // $ANTLR start "entryRuleImport"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2158:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2159:2: (iv_ruleImport= ruleImport EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2160:2: iv_ruleImport= ruleImport EOF
            {
             newCompositeNode(grammarAccess.getImportRule()); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport4985);
            iv_ruleImport=ruleImport();

            state._fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport4995); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImport"


    // $ANTLR start "ruleImport"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2167:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2170:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2171:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2171:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2171:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            {
            otherlv_0=(Token)match(input,43,FOLLOW_43_in_ruleImport5032); 

                	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2175:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2176:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2176:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2177:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard
            {
             
            	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport5053);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildcard();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportRule());
            	        }
                   		set(
                   			current, 
                   			"importedNamespace",
                    		lv_importedNamespace_1_0, 
                    		"QualifiedNameWithWildcard");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImport"


    // $ANTLR start "entryRuleQualifiedName"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2201:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2202:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2203:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName5090);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName5101); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2210:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2213:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2214:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2214:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2214:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName5141); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2221:1: (kw= '.' this_ID_2= RULE_ID )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==34) ) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2222:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,34,FOLLOW_34_in_ruleQualifiedName5160); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName5175); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2242:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;


        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2243:2: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2244:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard5223);
            iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();

            state._fsp--;

             current =iv_ruleQualifiedNameWithWildcard.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard5234); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildcard"


    // $ANTLR start "ruleQualifiedNameWithWildcard"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2251:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2254:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2255:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2255:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2256:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard5281);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    afterParserOrEnumRuleCall();
                
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2266:1: (kw= '.*' )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==44) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2267:2: kw= '.*'
                    {
                    kw=(Token)match(input,44,FOLLOW_44_in_ruleQualifiedNameWithWildcard5300); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopAsteriskKeyword_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildcard"


    // $ANTLR start "ruleScopeType"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2280:1: ruleScopeType returns [Enumerator current=null] : ( (enumLiteral_0= 'business' ) | (enumLiteral_1= 'system' ) | (enumLiteral_2= 'subsystem' ) ) ;
    public final Enumerator ruleScopeType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2282:28: ( ( (enumLiteral_0= 'business' ) | (enumLiteral_1= 'system' ) | (enumLiteral_2= 'subsystem' ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2283:1: ( (enumLiteral_0= 'business' ) | (enumLiteral_1= 'system' ) | (enumLiteral_2= 'subsystem' ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2283:1: ( (enumLiteral_0= 'business' ) | (enumLiteral_1= 'system' ) | (enumLiteral_2= 'subsystem' ) )
            int alt32=3;
            switch ( input.LA(1) ) {
            case 45:
                {
                alt32=1;
                }
                break;
            case 46:
                {
                alt32=2;
                }
                break;
            case 47:
                {
                alt32=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2283:2: (enumLiteral_0= 'business' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2283:2: (enumLiteral_0= 'business' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2283:4: enumLiteral_0= 'business'
                    {
                    enumLiteral_0=(Token)match(input,45,FOLLOW_45_in_ruleScopeType5356); 

                            current = grammarAccess.getScopeTypeAccess().getBusinessEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getScopeTypeAccess().getBusinessEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2289:6: (enumLiteral_1= 'system' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2289:6: (enumLiteral_1= 'system' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2289:8: enumLiteral_1= 'system'
                    {
                    enumLiteral_1=(Token)match(input,46,FOLLOW_46_in_ruleScopeType5373); 

                            current = grammarAccess.getScopeTypeAccess().getSystemEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getScopeTypeAccess().getSystemEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2295:6: (enumLiteral_2= 'subsystem' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2295:6: (enumLiteral_2= 'subsystem' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2295:8: enumLiteral_2= 'subsystem'
                    {
                    enumLiteral_2=(Token)match(input,47,FOLLOW_47_in_ruleScopeType5390); 

                            current = grammarAccess.getScopeTypeAccess().getSubsystemEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getScopeTypeAccess().getSubsystemEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScopeType"


    // $ANTLR start "ruleVisibility"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2305:1: ruleVisibility returns [Enumerator current=null] : ( (enumLiteral_0= 'black-box' ) | (enumLiteral_1= 'white-box' ) ) ;
    public final Enumerator ruleVisibility() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2307:28: ( ( (enumLiteral_0= 'black-box' ) | (enumLiteral_1= 'white-box' ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2308:1: ( (enumLiteral_0= 'black-box' ) | (enumLiteral_1= 'white-box' ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2308:1: ( (enumLiteral_0= 'black-box' ) | (enumLiteral_1= 'white-box' ) )
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==48) ) {
                alt33=1;
            }
            else if ( (LA33_0==49) ) {
                alt33=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }
            switch (alt33) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2308:2: (enumLiteral_0= 'black-box' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2308:2: (enumLiteral_0= 'black-box' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2308:4: enumLiteral_0= 'black-box'
                    {
                    enumLiteral_0=(Token)match(input,48,FOLLOW_48_in_ruleVisibility5435); 

                            current = grammarAccess.getVisibilityAccess().getBlackboxEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getVisibilityAccess().getBlackboxEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2314:6: (enumLiteral_1= 'white-box' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2314:6: (enumLiteral_1= 'white-box' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2314:8: enumLiteral_1= 'white-box'
                    {
                    enumLiteral_1=(Token)match(input,49,FOLLOW_49_in_ruleVisibility5452); 

                            current = grammarAccess.getVisibilityAccess().getWhiteboxEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getVisibilityAccess().getWhiteboxEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVisibility"


    // $ANTLR start "ruleLevel"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2324:1: ruleLevel returns [Enumerator current=null] : ( (enumLiteral_0= 'summary' ) | (enumLiteral_1= 'user-goal' ) | (enumLiteral_2= 'subfunction' ) ) ;
    public final Enumerator ruleLevel() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2326:28: ( ( (enumLiteral_0= 'summary' ) | (enumLiteral_1= 'user-goal' ) | (enumLiteral_2= 'subfunction' ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2327:1: ( (enumLiteral_0= 'summary' ) | (enumLiteral_1= 'user-goal' ) | (enumLiteral_2= 'subfunction' ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2327:1: ( (enumLiteral_0= 'summary' ) | (enumLiteral_1= 'user-goal' ) | (enumLiteral_2= 'subfunction' ) )
            int alt34=3;
            switch ( input.LA(1) ) {
            case 50:
                {
                alt34=1;
                }
                break;
            case 51:
                {
                alt34=2;
                }
                break;
            case 52:
                {
                alt34=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }

            switch (alt34) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2327:2: (enumLiteral_0= 'summary' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2327:2: (enumLiteral_0= 'summary' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2327:4: enumLiteral_0= 'summary'
                    {
                    enumLiteral_0=(Token)match(input,50,FOLLOW_50_in_ruleLevel5497); 

                            current = grammarAccess.getLevelAccess().getSummaryEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getLevelAccess().getSummaryEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2333:6: (enumLiteral_1= 'user-goal' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2333:6: (enumLiteral_1= 'user-goal' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2333:8: enumLiteral_1= 'user-goal'
                    {
                    enumLiteral_1=(Token)match(input,51,FOLLOW_51_in_ruleLevel5514); 

                            current = grammarAccess.getLevelAccess().getUsergoalEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getLevelAccess().getUsergoalEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2339:6: (enumLiteral_2= 'subfunction' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2339:6: (enumLiteral_2= 'subfunction' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2339:8: enumLiteral_2= 'subfunction'
                    {
                    enumLiteral_2=(Token)match(input,52,FOLLOW_52_in_ruleLevel5531); 

                            current = grammarAccess.getLevelAccess().getSubfunctionEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getLevelAccess().getSubfunctionEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLevel"


    // $ANTLR start "ruleScenarioResult"
    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2349:1: ruleScenarioResult returns [Enumerator current=null] : ( (enumLiteral_0= 'success' ) | (enumLiteral_1= 'failure' ) ) ;
    public final Enumerator ruleScenarioResult() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2351:28: ( ( (enumLiteral_0= 'success' ) | (enumLiteral_1= 'failure' ) ) )
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2352:1: ( (enumLiteral_0= 'success' ) | (enumLiteral_1= 'failure' ) )
            {
            // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2352:1: ( (enumLiteral_0= 'success' ) | (enumLiteral_1= 'failure' ) )
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==53) ) {
                alt35=1;
            }
            else if ( (LA35_0==54) ) {
                alt35=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 35, 0, input);

                throw nvae;
            }
            switch (alt35) {
                case 1 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2352:2: (enumLiteral_0= 'success' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2352:2: (enumLiteral_0= 'success' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2352:4: enumLiteral_0= 'success'
                    {
                    enumLiteral_0=(Token)match(input,53,FOLLOW_53_in_ruleScenarioResult5576); 

                            current = grammarAccess.getScenarioResultAccess().getSuccessEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getScenarioResultAccess().getSuccessEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2358:6: (enumLiteral_1= 'failure' )
                    {
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2358:6: (enumLiteral_1= 'failure' )
                    // ../sk.scerbak.ucl.usecases/src-gen/sk/scerbak/ucl/usecases/parser/antlr/internal/InternalUsecases.g:2358:8: enumLiteral_1= 'failure'
                    {
                    enumLiteral_1=(Token)match(input,54,FOLLOW_54_in_ruleScenarioResult5593); 

                            current = grammarAccess.getScenarioResultAccess().getFailureEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getScenarioResultAccess().getFailureEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleScenarioResult"

    // Delegated rules


    protected DFA22 dfa22 = new DFA22(this);
    static final String DFA22_eotS =
        "\21\uffff";
    static final String DFA22_eofS =
        "\2\uffff\6\10\1\uffff\2\13\1\uffff\5\13";
    static final String DFA22_minS =
        "\1\5\1\uffff\6\4\1\uffff\2\4\1\uffff\5\4";
    static final String DFA22_maxS =
        "\1\6\1\uffff\6\52\1\uffff\1\46\1\52\1\uffff\5\52";
    static final String DFA22_acceptS =
        "\1\uffff\1\1\6\uffff\1\3\2\uffff\1\2\5\uffff";
    static final String DFA22_specialS =
        "\21\uffff}>";
    static final String[] DFA22_transitionS = {
            "\1\2\1\1",
            "",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "",
            "\1\13\1\12\1\13\12\uffff\1\13\7\uffff\10\13\1\10\3\uffff\2"+
            "\13",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1"+
            "\15\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1"+
            "\15\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1"+
            "\15\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1"+
            "\15\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1"+
            "\15\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1"+
            "\15\1\uffff\2\13\1\uffff\1\16\1\17\1\20"
    };

    static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
    static final short[][] DFA22_transition;

    static {
        int numStates = DFA22_transitionS.length;
        DFA22_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
        }
    }

    class DFA22 extends DFA {

        public DFA22(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 22;
            this.eot = DFA22_eot;
            this.eof = DFA22_eof;
            this.min = DFA22_min;
            this.max = DFA22_max;
            this.accept = DFA22_accept;
            this.special = DFA22_special;
            this.transition = DFA22_transition;
        }
        public String getDescription() {
            return "1158:1: (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction )";
        }
    }
 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleModel131 = new BitSet(new long[]{0x0000080000008000L});
    public static final BitSet FOLLOW_rulePackage_in_ruleModel153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rulePackage236 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackage257 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_rulePackage269 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleUseCase_in_rulePackage290 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleUseCase_in_entryRuleUseCase327 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUseCase337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleUseCase374 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleUseCase395 = new BitSet(new long[]{0x0000000001FC0000L});
    public static final BitSet FOLLOW_18_in_ruleUseCase408 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleUseCase429 = new BitSet(new long[]{0x0000000001F80000L});
    public static final BitSet FOLLOW_19_in_ruleUseCase489 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleScope_in_ruleUseCase510 = new BitSet(new long[]{0x000000003FF80000L});
    public static final BitSet FOLLOW_20_in_ruleUseCase578 = new BitSet(new long[]{0x001C000000000000L});
    public static final BitSet FOLLOW_ruleLevel_in_ruleUseCase599 = new BitSet(new long[]{0x000000003FF80000L});
    public static final BitSet FOLLOW_21_in_ruleUseCase667 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleUseCase688 = new BitSet(new long[]{0x000000003FF80000L});
    public static final BitSet FOLLOW_22_in_ruleUseCase756 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleUseCase777 = new BitSet(new long[]{0x0003E0003FF80040L});
    public static final BitSet FOLLOW_23_in_ruleUseCase846 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleUseCase867 = new BitSet(new long[]{0x0003E0003FF80040L});
    public static final BitSet FOLLOW_24_in_ruleUseCase936 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleInterest_in_ruleUseCase957 = new BitSet(new long[]{0x000000003FF80040L});
    public static final BitSet FOLLOW_25_in_ruleUseCase1063 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleUseCase1084 = new BitSet(new long[]{0x000000003E000040L});
    public static final BitSet FOLLOW_26_in_ruleUseCase1153 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleUseCase1174 = new BitSet(new long[]{0x000000003E000040L});
    public static final BitSet FOLLOW_27_in_ruleUseCase1243 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleUseCase1264 = new BitSet(new long[]{0x000000003E000040L});
    public static final BitSet FOLLOW_28_in_ruleUseCase1333 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleTrigger_in_ruleUseCase1354 = new BitSet(new long[]{0x000000003E000000L});
    public static final BitSet FOLLOW_29_in_ruleUseCase1407 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleActionStep_in_ruleUseCase1428 = new BitSet(new long[]{0x00000001C0000012L});
    public static final BitSet FOLLOW_30_in_ruleUseCase1442 = new BitSet(new long[]{0x0000001000000010L});
    public static final BitSet FOLLOW_ruleExtension_in_ruleUseCase1463 = new BitSet(new long[]{0x0000001180000012L});
    public static final BitSet FOLLOW_31_in_ruleUseCase1479 = new BitSet(new long[]{0x0000001000000010L});
    public static final BitSet FOLLOW_ruleVariant_in_ruleUseCase1500 = new BitSet(new long[]{0x0000001100000012L});
    public static final BitSet FOLLOW_32_in_ruleUseCase1516 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIssue_in_ruleUseCase1537 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ruleScope_in_entryRuleScope1576 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScope1586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVisibility_in_ruleScope1632 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleScopeType_in_ruleScope1654 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleScope1676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActor_in_entryRuleActor1712 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActor1722 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleActor1768 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_16_in_ruleActor1781 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleActor1802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInterest_in_entryRuleInterest1840 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInterest1850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleInterest1898 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleInterest1910 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleInterest1931 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleState_in_entryRuleState1967 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleState1977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleState2022 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondition_in_entryRuleCondition2057 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCondition2067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleCondition2115 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleCondition2127 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleState_in_ruleCondition2148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTrigger_in_entryRuleTrigger2184 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTrigger2194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleTrigger2242 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleTrigger2254 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleAction_in_ruleTrigger2275 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActionStep_in_entryRuleActionStep2311 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActionStep2321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_ruleActionStep2367 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleActionStep2379 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleActionStep2402 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleActionStep2414 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleAction_in_ruleActionStep2435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAction_in_entryRuleAction2471 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAction2481 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubGoal_in_ruleAction2528 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInteraction_in_ruleAction2555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnyAction_in_ruleAction2582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnyAction_in_entryRuleAnyAction2617 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnyAction2627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleAnyAction2672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubGoal_in_entryRuleSubGoal2707 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubGoal2717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleSubGoal2764 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInteraction_in_entryRuleInteraction2799 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInteraction2809 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleInteraction2855 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleInteraction2878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleStepSelector_in_entryRuleSingleStepSelector2914 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSingleStepSelector2924 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_ruleSingleStepSelector2971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepRangeSelector_in_entryRuleStepRangeSelector3006 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStepRangeSelector3016 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_ruleStepRangeSelector3064 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleStepRangeSelector3076 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleORD_in_ruleStepRangeSelector3099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractStepSelector_in_entryRuleAbstractStepSelector3135 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractStepSelector3145 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleStepSelector_in_ruleAbstractStepSelector3192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepRangeSelector_in_ruleAbstractStepSelector3219 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepListSelector_in_entryRuleStepListSelector3254 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStepListSelector3264 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3310 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_35_in_ruleStepListSelector3323 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3344 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_ruleAllStepsSelector_in_entryRuleAllStepsSelector3382 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAllStepsSelector3392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleAllStepsSelector3434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepSelector_in_entryRuleStepSelector3482 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStepSelector3492 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepListSelector_in_ruleStepSelector3539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAllStepsSelector_in_ruleStepSelector3566 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionEndAction_in_entryRuleExtensionEndAction3601 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionEndAction3611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScenarioEnd_in_ruleExtensionEndAction3658 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGoto_in_ruleExtensionEndAction3685 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScenarioEnd_in_entryRuleScenarioEnd3720 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScenarioEnd3730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleScenarioEnd3767 = new BitSet(new long[]{0x0060000000000000L});
    public static final BitSet FOLLOW_ruleScenarioResult_in_ruleScenarioEnd3788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGoto_in_entryRuleGoto3824 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGoto3834 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleGoto3871 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleORD_in_ruleGoto3894 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionStep_in_entryRuleExtensionStep3930 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionStep3940 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleExtensionStep3988 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleExtensionStep4000 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleAction_in_ruleExtensionStep4021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionEndStep_in_entryRuleExtensionEndStep4057 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionEndStep4067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionEndAction_in_ruleExtensionEndStep4112 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtension_in_entryRuleExtension4147 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtension4157 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepSelector_in_ruleExtension4203 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleExtension4224 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleExtension4236 = new BitSet(new long[]{0x0000006000000040L});
    public static final BitSet FOLLOW_ruleExtensionStep_in_ruleExtension4257 = new BitSet(new long[]{0x0000006000000040L});
    public static final BitSet FOLLOW_ruleExtensionEndStep_in_ruleExtension4279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariant_in_entryRuleVariant4315 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariant4325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepSelector_in_ruleVariant4371 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleVariant4392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIssue_in_entryRuleIssue4428 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIssue4438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleIssue4486 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleIssue4498 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleIssue4519 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleIssue4531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_entryRuleORD4568 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleORD4579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleORD4618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_entryRulePlainText4663 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlainText4674 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText4714 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText4735 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_35_in_rulePlainText4759 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_40_in_rulePlainText4778 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_41_in_rulePlainText4797 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_42_in_rulePlainText4816 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_ruleNAME_in_entryRuleNAME4859 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNAME4870 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_UPID_in_ruleNAME4910 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleNAME4938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport4985 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport4995 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleImport5032 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport5053 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName5090 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName5101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName5141 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_34_in_ruleQualifiedName5160 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName5175 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard5223 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard5234 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard5281 = new BitSet(new long[]{0x0000100000000002L});
    public static final BitSet FOLLOW_44_in_ruleQualifiedNameWithWildcard5300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleScopeType5356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleScopeType5373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleScopeType5390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleVisibility5435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleVisibility5452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleLevel5497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleLevel5514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleLevel5531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleScenarioResult5576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleScenarioResult5593 = new BitSet(new long[]{0x0000000000000002L});

}
